﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text;
using MIAPWEB.Common;

namespace MIAPWEB
{
    public partial class Main : System.Web.UI.MasterPage
    {

        /// <summary>
        /// Url al que se va a redirección la página una vez mostrado el mensaje emergente.
        /// </summary>
        public string UrlToRedirect
        {
            get
            {
                return (string)(this.ViewState["UrlRedirect"] ?? string.Empty);
            }

            set
            {
                this.ViewState["UrlRedirect"] = value;
            }
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            Type type = Page.GetType();
            if (!this.IsPostBack)
            {
                this.InitializePage();
            }
            if (!Page.ClientScript.IsClientScriptBlockRegistered(type, "CloseBrowser"))
            {
                StringBuilder script = new StringBuilder();
                script.Append("<script type=\"text/javascript\"> function CloseWindows() {");
                script.Append(" var answer = confirm('¿Desea salir de la aplicación?'); ");
                script.Append(" if(answer) { ");
                script.Append(" window.open('', '_self', ''); ");
                script.Append(" window.close(); return true;} ");
                script.Append(" else { return false; } ");
                script.Append("} </script>");
                this.Page.ClientScript.RegisterClientScriptBlock(type, "CloseBrowser", script.ToString(), false);
            }

            lnkTerminarSesion.OnClientClick = "return CloseWindows();";
        }

        private void InitializePage()
        {
            this.lblUsuario.Text = AppSessionManager.Instance.NombreCompleto;
        }

        /// <summary>
        /// Muestra un mensaje emergente al usuario.
        /// </summary>
        /// <param name="message">Mensaje a mostrar.</param>
        public void ShowMessage(string message)
        {
            this.mensajeLabel.Text = message;
            this.aceptarButton.Focus();
            this.mensajeModalPopupExtender.CancelControlID = this.aceptarButton.ID;
            this.mensajeModalPopupExtender.Show();
        }

        /// <summary>
        /// Muestra un mensaje emergente al usuario y redirige a la url especificada.
        /// </summary>
        /// <param name="message">Mensaje a mostrar.</param>
        /// <param name="urlToRedirect">URL al que te va a redirecciónar</param>
        public void ShowMessage(string message, string urlToRedirect)
        {
            this.mensajeLabel.Text = message;
            this.mensajeModalPopupExtender.Show();
            this.mensajeModalPopupExtender.CancelControlID = string.Empty;
            this.UrlToRedirect = urlToRedirect;
            this.mensajeUpdatePanel.Triggers.Add(new PostBackTrigger() { ControlID = this.aceptarButton.ID });
        }

        /// <summary>
        /// Evento ejecutado al momento hacer clic sobre el boton 'Aceptar' de la ventana emergente de información.
        /// </summary>
        /// <param name="sender">Clase que invoca el evento.</param>
        /// <param name="e">Objeto EventArgs que contiene los datos del evento.</param>
        protected void AceptarButton_OnClick(object sender, EventArgs e)
        {
            this.mensajeModalPopupExtender.Hide();

            if (this.UrlToRedirect != string.Empty)
            {
                this.Response.Redirect(this.UrlToRedirect);
                this.UrlToRedirect = null;
            }
        }

        protected void lnkTerminarSesion_Click(object sender, EventArgs e)
        {
            Session.Abandon();
        }
    }
}